package JDBC;

import java.sql.*;

/**
 * PreparedStatement的基本用法
 */
public class demo3 {
    public static void main(String[] args) {
        Connection conn= null;
        PreparedStatement ps = null;
        try {
            //加载类驱动
            Class.forName("com.mysql.jdbc.Driver");
            //建立链接(连接对象内部其实包含了socket对象，是一个远程连接，比较耗时！这是Connection对象管理的一个要点)
            //真正开发中.为了提高效率，都会使用连接池来管理连接对象
            conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/zz?characterEncoding=UTF-8","root","123456");

            String sql = "INSERT INTO user (userName,age) VALUES (?,?)";//?是占位符,可以避免sql注入
            ps = conn.prepareStatement(sql);
//            ps.setString(1,"张哲");//参数索引从1开始  指定类型string
//            ps.setString(2,"18");
            ps.setObject(1,"王狗屎");//不特定类型，全是object，不需要在意是什么类型了
            ps.setObject(2,"16");
            ps.execute();//是否返回结果集 boolean
            //ps.executeUpdate();//运行insert  update  delete操作返回更新的行数
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                if(ps!=null){
                    ps.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if(conn!=null){
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
